shadow: Fix TLB flushing in the second pass of sh_prealloc() in the
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 25 Apr 2008 12:27:19 +0000 (13:27 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 25 Apr 2008 12:27:19 +0000 (13:27 +0100)
case where multiple vcpus use the same pagetables.

Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
xen/arch/x86/mm/shadow/common.c

index 1280ef695b69c5b43d5f7248acadc033c145c552..3769721198694f8c95bdb7f1dd8afb74069d48d3 100644 (file)
@@ -781,7 +781,6 @@ static void _shadow_prealloc(
     struct vcpu *v, *v2;
     struct list_head *l, *t;
     struct shadow_page_info *sp;
-    cpumask_t flushmask = CPU_MASK_NONE;
     mfn_t smfn;
     int i;
 
@@ -819,12 +818,11 @@ static void _shadow_prealloc(
             {
                 shadow_unhook_mappings(v, 
                                pagetable_get_mfn(v2->arch.shadow_table[i]));
-                cpus_or(flushmask, v2->vcpu_dirty_cpumask, flushmask);
 
                 /* See if that freed up enough space */
                 if ( space_is_available(d, order, count) )
                 {
-                    flush_tlb_mask(flushmask);
+                    flush_tlb_mask(d->domain_dirty_cpumask);
                     return;
                 }
             }